plot(d1$Periodo,d1$`Llegadas de Pasajeros Nacionales` ,type = "l", xlab="años", ylab="llegadas pasajeros Nacionales", col="cyan4")plot(d1$Periodo,d1$`Llegada de Pasajeros Internacionales` ,type = "l", xlab="años", ylab="llegadas pasajeros internacionales", col="cyan4")plot(d1$Periodo,d1$`Llegada Total de Pasajeros` ,type = "l", xlab="años", ylab="llegada total pasajeros", col="cyan4")Se puede observar que existe una tendencia a creer en los años anteriores, sin embargo el 2020, debido a la pandemia se obtuvo una caida en la llegada de visitantes
plot(d2$Periodo,d2$`Visitantes Nacionales` ,type = "l", xlab="años", ylab="visitantes nacionales", col="cyan4")plot(d2$Periodo,d2$`Visitantes Extranjeros` ,type = "l", xlab="años", ylab="visitantes extranjeros", col="cyan4")plot(d2$Periodo,d2$`% de Visitantes Nacionales` ,type = "l", xlab="años", ylab="% visitantes nacionales", col="cyan4")plot(d2$Periodo,d2$`% de Visitantes Extranjeros` ,type = "l", xlab="años", ylab="% visitantes nacionales", col="cyan4")
Las tendencias de visitantes nacionales y extranjeros se comportan de
manera distinta lo cual nos indica que cada vez hay más visitantes
extranjeros.
# Crear el mapa de Monterrey
mapa_mty <- leaflet() %>%
addTiles() %>%
setView(-100.31094, 25.66928, zoom = 14) ### Mty downtown area
mapa_mty %>%
addMarkers(data = datos_hoteleros,
~Longitud, ~Latitud,
popup = ~htmlEscape(`Descripcion estrato personal ocupado`))Si nos fijamos en nuestro mapa inicial, podemos ver que se agrupan de manera mas concentrada en lo que es la ZMM, especialmente en el centro de Monterrey
Una forma de reconocer la oferta actual es distinguirlos por el
tamaño actual de los hoteles, para esto utilizaremos la variable
Descripcion estrato personal ocupado la cual nos indica el
numero de empleados que hay en cada hotel del directorio. Para esto nos
enfocaremos en la zona en donde encontramos un “cluster” para
poder hacer un análisis más detallado
# Definir el polígono que delimita el área del centro de Monterrey
vertices <- matrix(c(-100.314, -100.308, -100.307, -100.314, -100.314,
25.672, 25.672, 25.666, 25.666, 25.672), ncol = 2, byrow = TRUE)
poligono_mty <- Polygon(vertices)
poligono_mty <- Polygons(list(poligono_mty), ID = "1")
poligono_mty <- SpatialPolygons(list(poligono_mty))
# Convertir los datos de hoteles a un objeto SpatialPointsDataFrame
datos_hoteleros_a<-datos_hoteleros
coordinates(datos_hoteleros_a) <- c("Longitud", "Latitud")
# Seleccionar los hoteles dentro del polígono del área del centro de Monterrey
hoteles_centro_mty <- datos_hoteleros_a[!is.na(over(datos_hoteleros_a, poligono_mty)), ]
hoteles_centro_mty_df <- as.data.frame(hoteles_centro_mty)
# Graficar los tamaños de los hoteles dentro del área del centro de Monterrey
grafico_barras <- ggplot(hoteles_centro_mty_df, aes(x = Descripcion.estrato.personal.ocupado, fill = Nombre.de.clase.de.la.actividad)) +
geom_bar() +
labs(title = "Tamaños de Hoteles en el Centro de Monterrey",
x = "Tamaño del Hotel",
y = "Cantidad") +
scale_fill_discrete() +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
grafico_barras
Encontramos que la categoría más usada son Hoteles con y sin servicios
integrados en casi todas las categorías de tamaño del directorio.
Ahora nos enfocaremos en estos hallazgos para encontrar como se distribuyen en nuestra zona de interés que es la ZMM.
hoteles_hospedaje<-datos_hoteleros%>%
filter(`Nombre de clase de la actividad`%in%
c ("Hoteles con otros servicios integrados",
"Hoteles sin otros servicios integrados",
"Departamentos y casas amueblados con servicios de hotelería"))
color<- colorFactor(palette = c("#8B0000", "#0000FF", "#228B22"),
domain = c("Hoteles con otros servicios integrados",
"Hoteles sin otros servicios integrados",
"Departamentos y casas amueblados con servicios de hotelería"))
mapa_mty %>%
addCircleMarkers(data = hoteles_hospedaje,
~Longitud, ~Latitud,
radius = 3,
color = ~color(`Nombre de clase de la actividad`),
popup = ~htmlEscape(`Nombre de la Unidad Económica`)) %>%
addLegend(
"bottomright", # Posición de la leyenda
colors = c("#8B0000", "#0000FF", "#228B22"), # Colores de la leyenda
labels = c("Departamentos y casas amueblados con servicios de hotelería",
"Hoteles con otros servicios integrados",
"Hoteles sin otros servicios integrados"
), # Etiquetas de la leyenda
title = "Actividades de Hospedaje" # Título de la leyenda
)Para el análisis en cuestión, donde queremos observar y analizar el mercado de hoteles y servicios hospedaje (ej: airbnb, suites) nos enfocamos unicamente en aquellos que son destinados para los visitantes y turistas de nuevo leon. Se omiten moteles y cabañas ya que su fin comercial es diferente al cual queremos hacer nuestro análisis
Podemos observar que el Centro de la ciudad sigue siendo la zona con más afluencia, y siendo más especificos. Observamos como se caracteriza de una forma particular. Lo que se encuentra cerca de Avenida Constitución viene siendo mayormente ocupada por Hoteles con otros servicios integrados (Restaurant, Salon de Eventos, etc), y la zona norte del centro cerca de Calzada Madero viene mayormente ocupada por Hoteles sin otros servicios integrados
Para poder comparar la demanda analizaremos los análisis de reseñas y calificaciones de las dos zonas que encontramos para poder ver como es la demanda y en base a que se mueve. También analizaremos ciertas características
library(RColorBrewer)
library(wordcloud)
library(wordcloud2)
library(googleway)
library(ggmap)
library(dplyr)
library(tm)## Loading required package: NLP
##
## Attaching package: 'NLP'
## The following object is masked from 'package:ggplot2':
##
## annotate
Para esto tomaremos un punto medio aproximado de cada una de las zonas identificadas. Para la zona de Calzada Madero sera el HOTEL MADERO EXPRESS y para Avenida Constitución será FIESTA AMERICANA PABELLON M MONTERREY
latitud_madero<- subset(datos_hoteleros,`Nombre de la Unidad Económica`=="HOTEL MADERO EXPRESS")$Latitud
longitud_madero<-subset(datos_hoteleros,`Nombre de la Unidad Económica`=="HOTEL MADERO EXPRESS")$Longitud
latitud_const<- subset(datos_hoteleros,`Nombre de la Unidad Económica`=="FIESTA AMERICANA PABELLON M MONTERREY")$Latitud
longitud_const<-subset(datos_hoteleros,`Nombre de la Unidad Económica`=="FIESTA AMERICANA PABELLON M MONTERREY")$Longitud
r<-2000search_str_madero<-google_places(search_string = 'hoteles', location=c(latitud_madero,longitud_madero), radius=r, key=gmaps_key)
search_str_madero_add<-google_places(search_string = 'hoteles', location=c(latitud_madero,longitud_madero), radius=r, key=gmaps_key, page_token = search_str_madero$next_page_token)business_name<-c(search_str_madero$results$name, search_str_madero_add$results$name)
business_rating<-c(search_str_madero$results$rating, search_str_madero_add$results$rating)
user_ratings_total<-c(search_str_madero$results$user_ratings_total, search_str_madero_add$results$user_ratings_total)
place_id<-c(search_str_madero$results$place_id, search_str_madero_add$results$place_id)
lat<-c(search_str_madero$results$geometry$location$lat, search_str_madero_add$results$geometry$location$lat)
lon<-c(search_str_madero$results$geometry$location$lng, search_str_madero_add$results$geometry$location$lng)data_madero<-data.frame(business_name,business_rating,user_ratings_total,place_id,lat,lon)
data_top_ratings_madero <- data_madero %>% slice_max(business_rating, n = 10)
data_low_ratings_madero <- data_madero %>% slice_min(business_rating, n = 10)top_ratings_plot_madero <- ggplot(data_top_ratings_madero, aes(x=reorder(business_name,business_rating), y=business_rating)) +
geom_bar(stat="identity", fill="lightblue") +
labs(title="Top 10 Mejores Ratings Hoteles", subtitle = "ZMM") +
coord_flip()
top_ratings_plot_maderolow_ratings_plot_madero <- ggplot(data_top_ratings_madero, aes(x=reorder(business_name,user_ratings_total), y=user_ratings_total)) +
geom_bar(stat="identity", fill="lightblue") +
labs(title="Top 10 Mejor Calificados Hoteles", subtitle = "ZMM") +
coord_flip()
low_ratings_plot_maderotop_users_plot_madero <- ggplot(data_low_ratings_madero, aes(x=reorder(business_name,business_rating), y=business_rating)) +
geom_bar(stat="identity", fill="lightpink") +
labs(title="Hoteles - Low 10 User Ratings", subtitle = "ZMM") +
coord_flip()
top_users_plot_maderolow_users_plot_madero <- ggplot(data_low_ratings_madero, aes(x=reorder(business_name,user_ratings_total), y=user_ratings_total)) +
geom_bar(stat="identity", fill="lightpink")+
labs(title="Hoteles - Low 10 Business Ratings", subtitle = "ZMM") +
coord_flip()
low_users_plot_maderoregister_google(key = gmaps_key)
ggmap(get_googlemap(center = c(lon = longitud_madero, lat = latitud_madero), zoom = 13)) +
stat_density2d(data = data_top_ratings_madero, aes(lon, lat, fill = ..level..),
geom = "polygon", alpha = 0.42) +
scale_fill_gradient(low = "green", high = "red", guide = "none") +
labs(x = '', y = '', title = "Calzada - Hoteles with the Highest Ratings")## ℹ <https://maps.googleapis.com/maps/api/staticmap?center=25.684102,-100.313222&zoom=13&size=640x640&scale=2&maptype=terrain&key=xxx-fOJiVf6hhwVTxOxBU>
search_str_const<-google_places(search_string = 'hoteles', location=c(latitud_const,longitud_const), radius=r, key=gmaps_key)
search_str_const_add<-google_places(search_string = 'hoteles', location=c(latitud_const,longitud_const), radius=r, key=gmaps_key, page_token = search_str_const$next_page_token)business_name<-c(search_str_const$results$name, search_str_const_add$results$name)
business_rating<-c(search_str_const$results$rating, search_str_const_add$results$rating)
user_ratings_total<-c(search_str_const$results$user_ratings_total, search_str_const_add$results$user_ratings_total)
place_id<-c(search_str_const$results$place_id, search_str_const_add$results$place_id)
lat<-c(search_str_const$results$geometry$location$lat, search_str_const_add$results$geometry$location$lat)
lon<-c(search_str_const$results$geometry$location$lng, search_str_const_add$results$geometry$location$lng)data_const<-data.frame(business_name,business_rating,user_ratings_total,place_id,lat,lon)
data_top_ratings_const <- data_const %>% slice_max(business_rating, n = 10)
data_low_ratings_const <- data_const %>% slice_min(business_rating, n = 10)top_ratings_plot_const <- ggplot(data_top_ratings_const, aes(x=reorder(business_name,business_rating), y=business_rating)) +
geom_bar(stat="identity", fill="lightblue") +
labs(title="Top 10 Mejores Ratings Hoteles", subtitle = "ZMM") +
coord_flip()
top_ratings_plot_constlow_ratings_plot_const <- ggplot(data_top_ratings_const, aes(x=reorder(business_name,user_ratings_total), y=user_ratings_total)) +
geom_bar(stat="identity", fill="lightblue") +
labs(title="Top 10 Mejor Calificados Hoteles", subtitle = "ZMM") +
coord_flip()
low_ratings_plot_consttop_users_plot_const <- ggplot(data_low_ratings_const, aes(x=reorder(business_name,business_rating), y=business_rating)) +
geom_bar(stat="identity", fill="lightpink") +
labs(title="Hotels - Low 10 User Ratings", subtitle = "ZMM") +
coord_flip()
top_users_plot_constlow_users_plot_const <- ggplot(data_low_ratings_const, aes(x=reorder(business_name,user_ratings_total), y=user_ratings_total)) +
geom_bar(stat="identity", fill="lightpink")+
labs(title="Hoteles - Low 10 Business Ratings", subtitle = "ZMM") +
coord_flip()
low_users_plot_constregister_google(key = gmaps_key)
ggmap(get_googlemap(center = c(lon = longitud_const, lat = latitud_const), zoom = 13)) +
stat_density2d(data = data_top_ratings_const, aes(lon, lat, fill = ..level..),
geom = "polygon", alpha = 0.42) +
scale_fill_gradient(low = "green", high = "red", guide = "none") +
labs(x = '', y = '', title = "ZMM - Hoteles with the Highest Ratings")## ℹ <https://maps.googleapis.com/maps/api/staticmap?center=25.66567,-100.316002&zoom=13&size=640x640&scale=2&maptype=terrain&key=xxx-fOJiVf6hhwVTxOxBU>
reviews_top_ratings_madero <- google_place_details(place_id = data_top_ratings_madero$place_id[10], key = gmaps_key)
reviews_low_ratings_madero <- google_place_details(place_id = data_low_ratings_madero$place_id[10], key = gmaps_key)top_ratings_text_madero <- reviews_top_ratings_madero$result$reviews$text
top_ratings_doc_madero <- Corpus(VectorSource(top_ratings_text_madero))
low_ratings_text_madero <- reviews_low_ratings_madero$result$reviews$text
low_ratings_doc_madero <- Corpus(VectorSource(low_ratings_text_madero))options(warn=-1)
top_ratings_doc_madero <- top_ratings_doc_madero %>% tm_map(removeNumbers) %>% tm_map(removePunctuation) %>% tm_map(stripWhitespace)
top_ratings_doc_madero <- tm_map(top_ratings_doc_madero, content_transformer(tolower))
top_ratings_doc_madero <- tm_map(top_ratings_doc_madero, removeWords, stopwords("english"))options(warn=-1)
low_ratings_doc_madero <- low_ratings_doc_madero %>% tm_map(removeNumbers) %>% tm_map(removePunctuation) %>% tm_map(stripWhitespace)
low_ratings_doc_madero <- tm_map(low_ratings_doc_madero, content_transformer(tolower))
low_ratings_doc_madero <- tm_map(low_ratings_doc_madero, removeWords, stopwords("english"))options(warn=-1)
dtm_top_madero <- TermDocumentMatrix(top_ratings_doc_madero)
matrix_top_madero <- as.matrix(dtm_top_madero)
words_top_madero <- sort(rowSums(matrix_top_madero),decreasing=TRUE)
words_top_df_madero <- data.frame(word = names(words_top_madero),freq=words_top_madero)options(warn=-1)
dtm_low_madero <- TermDocumentMatrix(low_ratings_doc_madero)
matrix_low_madero <- as.matrix(dtm_low_madero)
words_low_madero <- sort(rowSums(matrix_low_madero),decreasing=TRUE)
words_low_df_madero <- data.frame(word = names(words_low_madero),freq=words_low_madero)reviews_top_ratings_const <- google_place_details(place_id = data_top_ratings_const$place_id[10], key = gmaps_key)
reviews_low_ratings_const <- google_place_details(place_id = data_low_ratings_const$place_id[10], key = gmaps_key)top_ratings_text_const <- reviews_top_ratings_const$result$reviews$text
top_ratings_doc_const <- Corpus(VectorSource(top_ratings_text_const))
low_ratings_text_const <- reviews_low_ratings_const$result$reviews$text
low_ratings_doc_const <- Corpus(VectorSource(low_ratings_text_const))options(warn=-1)
top_ratings_doc_const <- top_ratings_doc_const %>% tm_map(removeNumbers) %>% tm_map(removePunctuation) %>% tm_map(stripWhitespace)
top_ratings_doc_const <- tm_map(top_ratings_doc_const, content_transformer(tolower))
top_ratings_doc_const <- tm_map(top_ratings_doc_const, removeWords, stopwords("english"))options(warn=-1)
low_ratings_doc_const <- low_ratings_doc_const %>% tm_map(removeNumbers) %>% tm_map(removePunctuation) %>% tm_map(stripWhitespace)
low_ratings_doc_const <- tm_map(low_ratings_doc_const, content_transformer(tolower))
low_ratings_doc_const <- tm_map(low_ratings_doc_const, removeWords, stopwords("english"))options(warn=-1)
dtm_top_const <- TermDocumentMatrix(top_ratings_doc_const)
matrix_top_const <- as.matrix(dtm_top_const)
words_top_const <- sort(rowSums(matrix_top_const),decreasing=TRUE)
words_top_df_const <- data.frame(word = names(words_top_const),freq=words_top_const)options(warn=-1)
dtm_low_const <- TermDocumentMatrix(low_ratings_doc_const)
matrix_low_const <- as.matrix(dtm_low_const)
words_low_const <- sort(rowSums(matrix_low_const),decreasing=TRUE)
words_low_df_const <- data.frame(word = names(words_low_const),freq=words_low_const)## Reading layer `mty_ageb' from data source
## `D:\Mis documentos\Escritorio\Tec\8vo Semestre\Planeación estratégica basada en analítica prescriptiva\Módulo 1\Act 4\AGEB_Mty\mty_ageb.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 15343 features and 96 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 2656415 ymin: 1495853 xmax: 2681626 ymax: 1528386
## Projected CRS: MEXICO_ITRF_2008_LCC